/**
 * 角色
 */

const express = require("express");
const { body, param } = require("express-validator");
const {
  selectRoleList,
  insertRole,
  deleteRole,
  updateRole,
  updateRoleStatus,
  selectRoleSelectedMenu,
  updateRoleSelectedMenu
} = require("@root/services/admin/role.service.js");

const router = express.Router();

/**
 * 获取角色
 */
router.get("/", selectRoleList);

const add_update = [
  body("role_name").notEmpty().escape().withMessage("角色名不能为空"),
  body("role_key").notEmpty().escape().withMessage("角色字符不能为空"),
  body("role_sort").notEmpty().isInt({ min: 1 }).withMessage("排序值必须是正整数"),
  body("remark").escape(),
];

/**
 * 添加角色
 */
router.post("/", add_update, insertRole);

/**
 * 修改角色
 */
router.put(
  "/",
  [...add_update, body("role_id").notEmpty().withMessage("角色id不能为空")],
  updateRole
);

/**
 * 删除角色
 */
router.delete(
  "/",
  [
    body("ids").isArray({ min: 1 }).withMessage("ids必须是数组,且不能为空"),
    body("ids.*").isInt({ min: 1 }).withMessage("数组中的元素必须是正整数"),
  ],
  deleteRole
);

/**
 * 修改角色状态
 */
router.patch(
  "/status",
  [
    body("role_id").notEmpty().withMessage("角色id不能为空"),
    body("status").notEmpty().isIn([0, 1]).withMessage("状态值必须是0或1"),
  ],
  updateRoleStatus
);


/**
 * 获取角色 已选菜单
 */
// router.get('/options/:role_id', [param("role_id").isInt().withMessage("角色id必须是正整数")], getRoleSelectedMenu)
router.get('/selectedMenu/:role_id', [param("role_id").notEmpty().withMessage(`role_id不能为空`).isNumeric({ no_symbols: true }).withMessage(`role_id必须是正整数`),], selectRoleSelectedMenu)

/**
 * 修改角色 已选菜单
 */
router.post('/selectedMenu', [
  body("role_id").notEmpty().withMessage(`role_id不能为空`).isNumeric({ no_symbols: true }).withMessage(`role_id必须是正整数`),
  body('menuIds').isArray({ min: 1 }).withMessage("menuIds必须是数组,且不能为空"),
  body("menuIds.*").isInt({ min: 1 }).withMessage("数组中的元素必须是正整数"),
], updateRoleSelectedMenu)

module.exports = router;
